/*
* Audacity: A Digital Audio Editor
*/
#pragma once

#include "modularity/imodulesetup.h"

namespace au::trackedit {
class TrackeditActionsController;
class TrackeditUiActions;
class Au3SelectionController;
class TrackeditConfiguration;
class TrackNavigationController;
class TrackeditModule : public muse::modularity::IModuleSetup
{
public:
    TrackeditModule();

    std::string moduleName() const override;
    void registerExports() override;
    void registerResources() override;
    void registerUiTypes() override;
    void resolveImports() override;
    void onInit(const muse::IApplication::RunMode& mode) override;
    void onDeinit() override;

private:
    const std::shared_ptr<TrackeditActionsController> m_trackeditController;
    const std::shared_ptr<TrackeditUiActions> m_trackeditUiActions;
    std::shared_ptr<Au3SelectionController> m_selectionController;
    std::shared_ptr<TrackeditConfiguration> m_configuration;
    std::shared_ptr<TrackNavigationController> m_trackNavigationController;
};
}
